package org.chat.client.screens;

import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.logical.shared.OpenEvent;
import com.google.gwt.event.logical.shared.OpenHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.RichTextArea;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class PanelEditeurPartage  {

	private VerticalPanel panel;
	private DisclosurePanel panelEditeur;
	private DisclosurePanel panelOptionEditeur;

	private static RichTextArea rta;
	private static RichTextToolbar toolBarEditeur;

	private static Button sauvgarder;
	private static Button effacer;

	
	public PanelEditeurPartage() {

		// Panels
		panel = new VerticalPanel();
		panelEditeur = new DisclosurePanel("Afficher l'Editeur");
		VerticalPanel pnlEditeur = new VerticalPanel();
		panelOptionEditeur = new DisclosurePanel("Afficher les options de l'editeur");
		HorizontalPanel pnlBtnEditeur = new HorizontalPanel();
		// RichTextArea
		rta = new RichTextArea();
		toolBarEditeur = new RichTextToolbar(rta);

		// Buttons
		sauvgarder = new Button("Sauvegarder");
		effacer = new Button("Effacer");

		// Tab
		Button[] tabBoutonEditeur = { sauvgarder, effacer };
		Widget[] tabPanelEditeur = { toolBarEditeur, rta, panelOptionEditeur };

		/*
		 * Add to panels
		 */

		for (Button btn : tabBoutonEditeur) {
			pnlBtnEditeur.add(btn);
		}

		panelOptionEditeur.add(pnlBtnEditeur);

		for (Widget wg : tabPanelEditeur) {
			pnlEditeur.add(wg);
		}

		panelEditeur.add(pnlEditeur);

		panel.add(panelEditeur);
		
		this.gestionOpenClose();

		/*
		 * Style css
		 */

		panel.addStyleName("pnlEditeurChatAffichage");
		panelEditeur.addStyleName("pnldisEditeur");
		panelOptionEditeur.addStyleName("pnldisOptionsEditeur"); 
		rta.addStyleName("rtaEditeur");
		sauvgarder.addStyleName("btnEditeurSauv");
		effacer.addStyleName("btnEditeurEffacer");
	}

	/**
	 * Change the header when a user clicks on this
	 */
	private void gestionOpenClose() {

		panelEditeur.addOpenHandler(new OpenHandler<DisclosurePanel>() {
			public void onOpen(OpenEvent<DisclosurePanel> event) {
				panelEditeur.getHeaderTextAccessor()
						.setText("Masquer l'Editeur");
				
			}
		});

		panelEditeur.addCloseHandler(new CloseHandler<DisclosurePanel>() {
			public void onClose(CloseEvent<DisclosurePanel> event) {
				panelEditeur.getHeaderTextAccessor().setText("Afficher l'Editeur");
				

			}
		});

		panelOptionEditeur.addOpenHandler(new OpenHandler<DisclosurePanel>() {
			public void onOpen(OpenEvent<DisclosurePanel> event) {
				panelOptionEditeur.getHeaderTextAccessor().setText(
						"Afficher les options de l'editeur");
			}
		});

		panelOptionEditeur
				.addCloseHandler(new CloseHandler<DisclosurePanel>() {
					public void onClose(CloseEvent<DisclosurePanel> event) {
						panelOptionEditeur.getHeaderTextAccessor().setText(
								"Masquer les options de l'editeur");
					}
				});
	}

	
	public VerticalPanel afficherComposant(boolean activer) {
		rta.setEnabled(activer);
		effacer.setEnabled(activer);
		return panel;
	}

}
